360公司 重排序列 python 您所在的位置:网站首页 序列重排 python 360公司 重排序列 python

360公司 重排序列 python

2023-09-17 14:24| 来源: 网络整理| 查看: 265

360 重排序列 python

2022.09.09

题目描述

给定一个长度为N的序列A1到AN,现在要对序列进行M次操作,每次操作对序列的前若干项进行升序或降序排列,求经过这M次操作后得到的序列。

输入描述

第一行包含两个整数N和M,1 ≤ \leq ≤ N, M ≤ \leq ≤ 105. 第二行包含N个空格隔开的整数A1到AN, 1 ≤ \leq ≤ A ≤ \leq ≤ 109. 接下来M行,每行包含两个整数t和x,0 ≤ \leq ≤ 1,1 ≤ \leq ≤ x ≤ \leq ≤ N,若t=0,则表示对A1到AN,进行升序排列;若t=1,则表示对A1到AN进行降序排列。操作执行顺序与输入顺序一致。

输出描述

输出N个空格隔开的整数,即经过M次操作后得到的序列

样例输入 4 2 1 2 4 3 1 3 0 2 样例揄出 2 4 1 3 解题思路 sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。 # sort() list1 = [1,2,4,3] print(list1[0:3].sort()) #输出为None --------------------------------------- # sorted() list1 = [1,4,2,3] print(sorted(list1[0:3])) #输出为[1, 2, 4]

在对列表进行区间排序之后,不在区间的元素会被舍弃,为了保存列表的完整性,需要对舍弃的元素先保存。

list1 = [1,2,4,3] list2 = list1[3:] # 把舍弃的元素在排序之前先保存一下 print(sorted(list1[0:3],reverse=True)+list2) # 前3个元素降序排列 #输出为[4, 2, 1, 3] # 前3个元素降序排列 n,m = map(int,input().split()) list1 = list(map(int,input().split())) # 输入列表 while m: t,x = map(int,input().split()) if t==0: # t为0,升序 list2 = list1[x:]# 对后x个元素保存 list1 = sorted(list1[0:x]) + list2# 升序 m-=1 else: list2 = list1[x:] list1 = sorted(list1[0:x],reverse=True)+list2# 降序 m-=1 for i in list1: print(i,end=' ') # 以空格为间隔进行输出

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有